package cliente;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;

import java.awt.Font;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JLabel;

import java.awt.Color;
import java.io.IOException;
import java.net.SocketException;
import java.util.List;
import java.util.StringTokenizer;

import javax.swing.JTextField;

import excepciones.ConfirmarAccionException;
import utilidad.SocketManager;

public class VentanaConfirmarAccion extends JFrame {

	private JPanel contentPane;
	private JTextField textFieldCambio;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					VentanaConfirmarAccion frame = new VentanaConfirmarAccion("", null, null);
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public VentanaConfirmarAccion(final String eleccion, final SocketManager sm, final PanelListado pl) {
		setTitle(".:: Sistema Seguridad: Confirmar acci\u00F3n "+eleccion+" ::.");
		
		setBounds(100, 100, 450, 250);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JButton btnConfirmar = new JButton("Confirmar");
		btnConfirmar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				//Realizar el envio al servidor y aceptación

				String codigo = "";
				String sentencia="CONFIRMAR_ACCION "+textFieldCambio.getText();
				System.out.println("Sentencia enviada:" + sentencia);
				try {
					try{
						sm.Escribir(sentencia + '\n');
						}
						catch(SocketException e)
						{
							JOptionPane.showMessageDialog(null, "Parece que el administrador del servidor le ha cerrado la conexión. Intente conectarse más tarde.", "¡Ups!", JOptionPane.ERROR_MESSAGE);
						}
					String sentenciaRecibida = sm.Leer();
					System.out.println(sentenciaRecibida);
					StringTokenizer token = new StringTokenizer(sentenciaRecibida);
					codigo = token.nextToken();
					System.out.println(codigo);
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
				if(codigo.equals("206"))
				{
					pl.modificarAccion(eleccion+" "+textFieldCambio.getText());
					JOptionPane.showMessageDialog(null, "¡Correcto! Hemos confirmado la acción sobre la variable "+VentanaPrincipal.variableAccion+" de la placa "+VentanaPrincipal.placaAccion, "¡Listo!", JOptionPane.INFORMATION_MESSAGE);
					dispose();
					
				}
				else
				{
					if(codigo.equals("409"))
					{
						try {
							throw new ConfirmarAccionException();
						} catch (ConfirmarAccionException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}
				}
				
				
			}
		});
		btnConfirmar.setFont(new Font("Times New Roman", Font.BOLD, 14));
		btnConfirmar.setBounds(103, 166, 110, 30);
		contentPane.add(btnConfirmar);
		
		JButton btnRechazar = new JButton("Rechazar");
		btnRechazar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				
				String codigo = "";
				String sentencia="RECHAZAR_ACCION";
				System.out.println("Sentencia enviada:" + sentencia);
				try {
					try{
						sm.Escribir(sentencia + '\n');
						}
						catch(SocketException e)
						{
							JOptionPane.showMessageDialog(null, "Parece que el administrador del servidor le ha cerrado la conexión. Intente conectarse más tarde.", "¡Ups!", JOptionPane.ERROR_MESSAGE);
						}
					String sentenciaRecibida = sm.Leer();
					System.out.println(sentenciaRecibida);
					StringTokenizer token = new StringTokenizer(sentenciaRecibida);
					codigo = token.nextToken();
					System.out.println(codigo);
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
				if(codigo.equals("207"))
				{
					dispose();
				}
				
				
			}
		});
		btnRechazar.setFont(new Font("Times New Roman", Font.BOLD, 14));
		btnRechazar.setBounds(245, 166, 100, 30);
		contentPane.add(btnRechazar);
		
		JLabel lblParmetrosAccin = new JLabel("Par\u00E1metros acci\u00F3n ");
		lblParmetrosAccin.setForeground(Color.BLUE);
		lblParmetrosAccin.setFont(new Font("Times New Roman", Font.BOLD, 14));
		lblParmetrosAccin.setBounds(55, 28, 250, 30);
		contentPane.add(lblParmetrosAccin);
		
		JLabel lblAccion = new JLabel("Valor a asignar");
		lblAccion.setFont(new Font("Times New Roman", Font.BOLD, 14));
		lblAccion.setBounds(80, 92, 120, 30);
		contentPane.add(lblAccion);
		
		textFieldCambio = new JTextField();
		textFieldCambio.setFont(new Font("Times New Roman", Font.PLAIN, 14));
		textFieldCambio.setForeground(Color.GREEN);
		textFieldCambio.setBounds(232, 92, 145, 30);
		contentPane.add(textFieldCambio);
		textFieldCambio.setColumns(10);
		
		setLocationRelativeTo(null);
		setVisible(true);
		setResizable(false);
		setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
	}
}
